//
//  Virtual_function.hpp
//  learnC++
//
//  Created by liuzhibing on 2018/6/15.
//  Copyright © 2018年 yunfan.com. All rights reserved.
//

#ifndef Virtual_function_hpp
#define Virtual_function_hpp

#include <stdio.h>
#include <iostream>

//虚函数解决继承类改为基类指针，调用的方法始终是基类方法的问题
//始终不要把构造函数标记为虚函数
//虚函数比普通函数会消耗更多的查找资源
//基类是虚函数，继承类的同名同参数函数默认也是虚函数（但一般都会加上）

class Base8 {
    
public:
    virtual const char * getName(){return "base";}
    
};

class Derived8 : public Base8{
    
    
public:
    virtual const char * getName(){return "Derived";}
    
};


/*
 
 Derived8 d;
 Base8 *pb = &d;
 Base8 &rb = d;
 const char * str = pb->getName();
 const char * rstr = rb.getName();
 printf("%s===%s\n",str,rstr);
 
 结果：
 Derived===Derived
 
 你依然可以使用范围解析运算符来直接访问基类的方法如：
 rb.Base8::getName();
 
 */


#endif /* Virtual_function_hpp */
